package hn.cch.util;

import hn.cch.constant.Path;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;



public class FileUtil {

    private static Logger logger = LoggerFactory.getLogger(FileUtil.class);

    /**
     * 读取文件输入流数据返回字节数组
     * @param inputStream
     * @return
     */
    public static byte[] toBytes(InputStream inputStream) {
        
        try {
            byte[] bytes = new byte[inputStream.available()];
            inputStream.read(bytes);
            return bytes;
        } catch (IOException e) {
            e.printStackTrace();
            logger.error("file read error : " + e.getMessage());
            return null;
        }
    }

    /**
     * 将数据写入文件中：文件不存在会自动创建
     * @param outputStream
     * @param bytes
     */
    public static void fromBytes(OutputStream outputStream, byte[] bytes) {

        try {
            outputStream.write(bytes);
            outputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
            logger.error("file write error : " + e.getMessage());
            return;
        }
    }



    


    /**
     * 获取包含的文件
     * @param file 必须存在而且是文件夹（否则返回空）
     * @return
     */
    public static File[] getFiles(File file) {

        if (!file.exists()){
            logger.error("config error : " + file.getPath() + "is not exists");
            return null;
        }
        if (!file.isDirectory()){
            logger.error("config error : " + file.getPath() + "is not directory");
            return null;
        }

        File[] files = file.listFiles();
        return files;
    }

    public static void test(){

        File temp = new File(Path.temp_file_text + File.separator + "temp123.txt");

       //  if (!temp.exists()){
       //     logger.error(temp.getAbsolutePath() + "is not exists");
       //      temp.createNewFile();
       // }
       // if (!temp.isDirectory()){
       //     logger.error(temp.getPath() + " is not directory");
       // }



        byte[] bytes = FileUtil.toBytes(StreamUtil.toInput(temp));

        String text = StringUtil.fromBytes(bytes);

        logger.info(text);

        // byte[] bytes = StringUtil.toBytes("qwer2");
        // FileUtil.fromBytes(StreamUtil.toOutput(temp, true), bytes);
        // logger.info("1234567890");





        // String[] paths = temp.list();
        // for (String path:paths) {
        //     logger.info(path);
        // }
        //
        // File[] files = temp.listFiles();
        //
        // for (File file:files) {
        //     logger.info(file.getAbsolutePath());
        //     logger.info(file.getName());
        //     logger.info(file.getPath());
        // }


    }





    public static void main(String[] args) {


        test();






        //readme
//        String name = "./readme";
//        String name = "readme";
//        File file = new File(name);
//        String text = FileUtil.fromBytes(file);
//        logger.info(text);


//        String name = "test";
//        String name = "test/test";
//        String name = "demo/demo";
//        File file = new File(name);
//        if (!file.exists()){
//            try {
//                file.createNewFile();
//
//
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }

//        logger.info("File : " + file.mkdirs());

//        logger.info("File : " + file.isFile());
//        logger.info("Directory : " + file.isDirectory());





    }

}
